/*
餐桌模块
 */
const foodTableDao = require('../dao/FoodTableDao');

function ff() {
    console.log('预留公共函数');
}

/**
 * 公共函数，输出日志，输出返回前端信息
 * @param resultData   数据库返回数据
 * @param resp         响应对象
 * @param msgStr       返回前端提示文字
 * @param action       判断是否是select查询返回，因为select查询返回会新增data字段(4为select，1为insert，2为delete，3为update，目前除了select单独处理，其余暂时没有做分离)
 * @param data         如果执行的查询，则data传递是查询的结果值，增删改操作，不用传递data对象
 */
function console_Logs_Send(resultData, resp, msgStr, action, data) {
    console.log('OrderingFoodController 数据库返回信息如下:');
    console.log(resultData);
    let json = {};
    // 如果dao层返回500状态，代表失败，如果返回200状态，代表成功
    if(resultData.code === 500)
        json = {code:500, msg:'服务器异常，请稍候重试'};  // 如果出现异常，通过两种情况，1.数据库连接出错，2.数据表结构操作出错
    else {
        if(action === 4)   // 如果action为4，代表查询处理，返回对应的data对象
            json = {code:200, msg:msgStr, data:data};
        else
            json = {code:200, msg:msgStr};
    }
    console.log(json);
    // 响应给前台页面
    resp.send(json);
}

module.exports = {
    async addFoodTable(req,resp){        // 新增餐桌
        let resultData = await foodTableDao.insertFoodTable(req.body.food_table_number, req.body.food_table_action, req.body.food_table_seat, req.body.food_table_usingTime, req.body.food_table_type, req.body.food_table_peoples, req.body.food_table_account);
        console_Logs_Send(resultData, resp, '新增数据成功', 1);
    },
    async deleteFoodTableById(req,resp){                          // 基于主键id 删除 一条记录
        let resultData = await foodTableDao.deleteFoodTableById(req.body.id);
        console_Logs_Send(resultData, resp, '删除数据成功', 2);
    },
    async updateFoodTableById(req,resp){                          // 基于主键id 更新 一条记录
        let resultData = await foodTableDao.updateFoodTableById(req.body.food_table_number, req.body.food_table_action, req.body.food_table_seat, req.body.food_table_usingTime, req.body.food_table_type, req.body.food_table_peoples, req.body.food_table_account, req.body.id);
        console_Logs_Send(resultData, resp, '更新数据成功', 3);
    },
    async updateFoodTableForPeoples(req,resp){                   // 基于餐桌编号 更新 实际用餐用户数
        let resultData = await foodTableDao.updateFoodTableForPeoples(req.body.food_table_number, req.body.food_table_peoples);
        console_Logs_Send(resultData, resp, '更新数据成功', 3);
    },
    async selectAllFoodTable(req,resp){                          // 查询所有菜品
        let resultData = await foodTableDao.selectAllFoodTable();
        console_Logs_Send(resultData, resp, '查询数据成功', 4, resultData.data);
    },
    async selectFoodTableById(req,resp){                          // 基于主键id查询一条记录
        let resultData = await foodTableDao.selectFoodTableById(req.body.id);
        console_Logs_Send(resultData, resp, '查询数据成功', 4, resultData.data);
    },
    async selectFoodTableByNumber(req,resp){                      // 根据餐桌编号查询某一个餐桌
        let resultData = await foodTableDao.selectFoodTableByNumber(req.query.food_table_number);
        console_Logs_Send(resultData, resp, '查询数据成功', 4, resultData.data);
    },
    async selectFoodTableByLimit(req,resp){                          // 基于页码进行分页处理
        let page = req.body.page;                               // 获取页码
        let startIndex = (page - 1) * 10;                       // 计算起始显示下标， 默认每页显示10条
        let resultData = await foodTableDao.selectFoodTableByLimit(startIndex);
        console_Logs_Send(resultData, resp, '查询数据成功', 4, resultData.data);
    },
    async selectFoodTableCount(req,resp){                          // 根据用户传递模糊菜品名称进行统计个数
        let resultData = await foodTableDao.selectFoodTableCount(req.query.food_name);
        console_Logs_Send(resultData, resp, '查询个数成功', 4, resultData.data[0]['count(*)']);
    }
};

